// import { Inject, Post, Get, Body, Query } from '@midwayjs/core';
// import { CoolController, BaseController } from '@cool-midway/core';
// import { AutomationTaskEntity } from '../../entity/task';
// import { AutomationTaskService } from '../../service/app/task';

// /**
//  * 管理端-自动化任务
//  */
// @CoolController({
//   api: ['add', 'delete', 'update', 'info', 'list', 'page'],
//   entity: AutomationTaskEntity,
//   service: AutomationTaskService,
//   pageQueryOp: {
//     keyWordLikeFields: ['a.description', 'a.deviceId'],
//     fieldEq: ['a.actionType', 'a.pipelineId'],
//     where: async (ctx) => {
//       const { createTime, actionType } = ctx.request.body;
//       const conditions = [];
//       if (createTime && createTime.length === 2) {
//         conditions.push([`a.createTime BETWEEN '${createTime[0]}' AND '${createTime[1]}'`]);
//       }
//       if (actionType !== undefined && actionType !== null) {
//         conditions.push([`a.actionType = ${actionType}`]);
//       }
//       return conditions;
//     },
//     select: ['a.*'],
//     join: [],
//   },
// })
// export class AdminAutomationTaskController extends BaseController {
//   @Inject()
//   automationTaskService: AutomationTaskService;

//   /**
//    * 根据流水线ID获取任务列表
//    */
//   @Get('/byPipeline', { summary: '根据流水线ID获取任务列表' })
//   async getTasksByPipeline(@Query('pipelineId') pipelineId: number) {
//     const tasks = await this.automationTaskService.list({ pipelineId }, { order: 'ASC' });
//     return this.ok(tasks);
//   }

//   /**
//    * 批量删除任务
//    */
//   @Post('/batchDelete', { summary: '批量删除任务' })
//   async batchDelete(@Body('ids') ids: number[]) {
//     await this.automationTaskService.delete(ids);
//     return this.ok('删除成功');
//   }

//   /**
//    * 调整任务执行顺序
//    */
//   @Post('/reorder', { summary: '调整任务执行顺序' })
//   async reorderTasks(@Body() params: { pipelineId: number; taskOrders: { id: number; order: number }[] }) {
//     const { pipelineId, taskOrders } = params;
    
//     for (const taskOrder of taskOrders) {
//       await this.automationTaskService.update(taskOrder.id, { order: taskOrder.order });
//     }
    
//     return this.ok('调整成功');
//   }

//   /**
//    * 验证任务配置
//    */
//   @Post('/validate', { summary: '验证任务配置' })
//   async validateTask(@Body() task: any) {
//     const errors = [];

//     // 基础验证
//     if (!task.deviceId) {
//       errors.push('请选择设备');
//     }

//     if (!task.actionType && task.actionType !== 0) {
//       errors.push('请选择操作类型');
//     }

//     // 根据操作类型验证
//     if (task.actionType === 0 || task.actionType === 1) {
//       // 开/关操作
//       if (!task.deviceField) {
//         errors.push('请设置设备属性字段');
//       }
//       if (!task.setValue) {
//         errors.push('请设置操作值');
//       }
//     } else if (task.actionType === 2) {
//       // 完全同步操作
//       if (!task.command) {
//         errors.push('请设置同步指令');
//       } else {
//         try {
//           JSON.parse(task.command);
//         } catch {
//           errors.push('同步指令必须是有效的JSON格式');
//         }
//       }
//     }

//     return this.ok({
//       valid: errors.length === 0,
//       errors
//     });
//   }

//   /**
//    * 获取任务统计信息
//    */
//   @Get('/statistics', { summary: '获取任务统计信息' })
//   async getStatistics() {
//     const total = await this.automationTaskService.count();
//     const openTasks = await this.automationTaskService.count({ actionType: 0 });
//     const closeTasks = await this.automationTaskService.count({ actionType: 1 });
//     const syncTasks = await this.automationTaskService.count({ actionType: 2 });

//     return this.ok({
//       total,
//       openTasks,
//       closeTasks,
//       syncTasks,
//       distribution: {
//         open: total > 0 ? Math.round((openTasks / total) * 100) : 0,
//         close: total > 0 ? Math.round((closeTasks / total) * 100) : 0,
//         sync: total > 0 ? Math.round((syncTasks / total) * 100) : 0
//       }
//     });
//   }

//   /**
//    * 复制任务
//    */
//   @Post('/copy', { summary: '复制任务' })
//   async copyTask(@Body('id') id: number) {
//     const task = await this.automationTaskService.info(id);
//     if (!task) {
//       return this.fail('任务不存在');
//     }

//     delete task.id;
//     delete task.createTime;
//     delete task.updateTime;
//     task.description = `${task.description}_副本`;
//     task.order = task.order + 1;

//     const newTask = await this.automationTaskService.add(task);
//     return this.ok(newTask);
//   }

//   /**
//    * 测试任务执行
//    */
//   @Post('/test', { summary: '测试任务执行' })
//   async testTask(@Body('id') id: number) {
//     // 这里可以实现任务测试逻辑
//     // 例如：模拟执行任务，检查设备响应等
    
//     const task = await this.automationTaskService.info(id);
//     if (!task) {
//       return this.fail('任务不存在');
//     }

//     // TODO: 实现实际的任务测试逻辑
//     console.log(`Testing task: ${task.description}`);
//     console.log(`Device: ${task.deviceId}, Action: ${task.actionType}`);

//     return this.ok({
//       success: true,
//       message: '任务测试成功',
//       testResult: {
//         deviceId: task.deviceId,
//         actionType: task.actionType,
//         command: task.command,
//         timestamp: new Date()
//       }
//     });
//   }
// }